class ProjectcompController < ApplicationController
  # フィルタ定義
  before_filter :login_required # ログインチェック

  #
  #=== プロジェクトアイテムの順番の入れ替えを行う
  #
  #アイテムの行番号を更新する
  #
  def item_order_update
    id     = params[:id]
    offset = params[:offset]
    # 対象のプロジェクト構成データを取得
    target = DatProjectcomp.find(id)
    # 入れ替え対象のプロジェクト構成データを取得
    if offset.to_i > 0
      conditions_str = 'project_id=? AND line_no > ?'
    else
      conditions_str = 'project_id=? AND line_no < ?'
    end
    opt = {
      :conditions => [conditions_str, target.project_id, target.line_no],
      :order      => "line_no asc"
    }
    replacement = DatProjectcomp.find(:first, opt)

    # 入れ替え対象がある場合、行番号を入れ替え
    unless replacement.nil?
      target_line_no      = replacement.line_no
      replacement.line_no = target.line_no
      target.line_no      = target_line_no
      
      target.save
      replacement.save
    end
    result = render_component_as_string(:controller=>"project", :action=>"json_list_for_wbs", :params=>{:id=>target.project_id})
    render :text =>result
  end
end